
var lotesPrueba = [
    {idLote: 1, 
        cigueniales: [
        {id: '1', diametro1:40.032, diametro2:40.02, diametro3:40.023 , conicidad1:0.003, conicidad2:0.01, conicidad3:0.016 , ancho1:100.012, ancho2:100.1 ,ancho3:100.07, excentricidad1: 0.008, excentricidad2: 0, excentricidad3: 0.01 },
        {id: '2', diametro1:39.95, diametro2:39.98, diametro3:40 , conicidad1:0.01, conicidad2:0, conicidad3:0.004 , ancho1:99.97, ancho2:99.47, ancho3:100.03 , excentricidad1:0, excentricidad2: 0.01, excentricidad3: 0 },
        {id: '3', diametro1:40.04, diametro2:39.97, diametro3:39.994 , conicidad1:0, conicidad2:0.01, conicidad3:0.02 , ancho1: 100.439 ,ancho2:99.97, ancho3:100.02, excentricidad1: 0.005, excentricidad2: 0.003, excentricidad3: 0.001 },
        {id: '4', diametro1:40.05, diametro2:39.95, diametro3:39.95 , conicidad1:0.03, conicidad2:0.02, conicidad3:0.025 , ancho1:100.5 ,ancho2:100.5, ancho3:100.5, excentricidad1:0, excentricidad2: 0.01, excentricidad3: 0 },
        {id: '5', diametro1:40.07, diametro2:39.95, diametro3:39.95 , conicidad1:0.03, conicidad2:0.03, conicidad3:0.025 , ancho1:100.5 ,ancho2:100.5, ancho3:100.5, excentricidad1:0, excentricidad2: 0.01, excentricidad3: 0 }
    ]},
    {idLote: 2, 
        cigueniales: [
        {id: '1', diametro1:40.03, diametro2:40.041, diametro3:40.0241 , conicidad1:0.02, conicidad2:0.02, conicidad3:0.012 , ancho1:100.3,		ancho2:100.3, ancho3:100.3, excentricidad1: 0, excentricidad2: 0, excentricidad3: 0 },
        {id: '2', diametro1:40.01, diametro2:40.004, diametro3:40.007 , conicidad1:0.025, conicidad2:0.022, conicidad3:0.016 , ancho1:99.77, 	ancho2:100.2, ancho3:100.19, excentricidad1: 0.01, excentricidad2: 0.01, excentricidad3: 0 },
        {id: '3', diametro1:39.97, diametro2:39.98, diametro3:40.005 , conicidad1:0.013, conicidad2:0.018, conicidad3:0.03 , ancho1: 100.21,	ancho2:100.5, ancho3:100.05, excentricidad1: 0, excentricidad2: 0, excentricidad3: 0.1 },
        {id: '4', diametro1:40.002, diametro2:40.03, diametro3:39.95 , conicidad1:0.02, conicidad2:0.03, conicidad3:0.004 , ancho1:100.42,	ancho2:100.02, ancho3:100.13, excentricidad1: 0, excentricidad2: 0.01, excentricidad3: 0 },
        {id: '5', diametro1:39.94, diametro2:40.021, diametro3:40.01 , conicidad1:0.001, conicidad2:0.006, conicidad3:0.01 , ancho1:100.001,	ancho2:99.57, ancho3:99.9, excentricidad1: 0, excentricidad2: 0, excentricidad3: 0 }
    ]},
    {idLote: 3, 
        cigueniales: [
        {id: '1', diametro1:40.032, diametro2:40.02, diametro3:40.023 , conicidad1:0.003, conicidad2:0.01, conicidad3:0.016 , ancho1:100.012, ancho2:100.1 ,ancho3:100.07, excentricidad1: 0.008, excentricidad2: 0, excentricidad3: 0.01 },
        {id: '2', diametro1:39.95, diametro2:39.98, diametro3:40 , conicidad1:0.01, conicidad2:0, conicidad3:0.004 , ancho1:99.97, ancho2:99.98, ancho3:100.03 , excentricidad1:0, excentricidad2: 0.01, excentricidad3: 0 },
        {id: '3', diametro1:40.04, diametro2:39.97, diametro3:39.994 , conicidad1:0, conicidad2:0.01, conicidad3:0.02 , ancho1: 100.439 ,ancho2:99.97, ancho3:100.02, excentricidad1: 0.005, excentricidad2: 0.003, excentricidad3: 0.001 },
        {id: '4', diametro1:40.05, diametro2:39.95, diametro3:39.95 , conicidad1:0.03, conicidad2:0.03, conicidad3:0.025 , ancho1:100.5 ,ancho2:100.5, ancho3:100.5, excentricidad1:0, excentricidad2: 0.01, excentricidad3: 0 },
        {id: '5', diametro1:40.03, diametro2:39.995, diametro3:39.954 , conicidad1:0.02, conicidad2:0.01, conicidad3:0.025 , ancho1:100.5 ,ancho2:100.42, ancho3:100.38, excentricidad1:0, excentricidad2: 0.01, excentricidad3: 0 }
    ]}

];

/************************************************************/
var loteStore = Ext.create('Ext.data.Store',{
        fields: ['id', 'name'],
        data: [
                {id: '1', name: 'Lote #1'},
                {id: '2', name: 'Lote #2'},
                {id: '3', name: 'Lote #3'}
        ]
});

function loteSelected(){
	if (comboLote.value > 0) {
		botonComenzar.setDisabled(false);
	} else {
		comboLote.clearValue();
		botonComenzar.setDisabled(true);
	}
}

var comboLote = Ext.create('Ext.form.ComboBox', {
        fieldLabel: 'Lote',
        store: loteStore,
        queryMode: 'local',
        displayField: 'name',
        valueField: 'id',
        autoSelect: true,
        emptyText: 'Seleccione un lote ...',
        allowBlank: false,
        listeners: {
            change: loteSelected
        }


});


/*****************************************************************/
Ext.define('Resultado', {
    extend: 'Ext.data.Model',
	idProperty: 'id',
    fields: [
        {name: 'id', type: 'string'},
        {name: 'diametro1', type: 'string'},
        {name: 'diametro2', type: 'string'},
        {name: 'diametro3', type: 'string'},
        {name: 'conicidad1', type: 'string'},
        {name: 'conicidad2', type: 'string'},
        {name: 'conicidad3', type: 'string'},
        {name: 'ancho1', type: 'string'},
        {name: 'ancho2', type: 'string'},
        {name: 'ancho3', type: 'string'},
        {name: 'excentricidad1', type: 'string'},
        {name: 'excentricidad2', type: 'string'},
        {name: 'excentricidad3', type: 'string'},
        {name: 'estado', type: 'string'}     
    ]	
});


var resultadosStore = Ext.create('Ext.data.Store', {
    storeId:'resultadosStore',   
	model: 'Resultado'
});

/*
var gridResultados = Ext.create('Ext.grid.Panel', {
    title: 'Resultados',
    store: resultadosStore,
    columns: [
        { header: 'Cigue&#241;al',  dataIndex: 'id' },
        { header: 'Diametro', dataIndex: 'diametro' },
        { header: 'Conicidad', dataIndex: 'conicidad' },
        { header: 'Ancho', dataIndex: 'ancho' },
        { header: 'Excentricidad', dataIndex: 'excentricidad' },
        { header: 'Estado', dataIndex: 'estado' }
    ],
    height: 200
});*/

/************************************/
function validar(value, tipo) {
	var color = 'black';
	if (!validator()["is" + tipo + "Valido"](value)){
		color = 'red';
	} else if (!validatorNorma()["is" + tipo + "Valido"](value)){
		color = 'orange';
	}
	return Ext.String.format('<span style="color:{1};">{0}</span>', value , color);
}
function diametroRenderer(value){
	return validar(value,"Diametro");
}
function conicidadRenderer(value){
	return validar(value,"Conicidad");
}
function anchoRenderer(value){
	return validar(value,"Ancho");
}
function excentricidadRenderer(value){
	return validar(value,"Excentricidad");
}
/*************************************/


var gridResultados = Ext.create('Ext.grid.Panel', {
    title: 'Resultados',
    store: resultadosStore,
    columns: [
        { header: 'Cigue&#241;al', dataIndex: 'id', flex: 1, draggable: false },
        { header: 'Diametro (mm)', sortable: false, draggable: false, columns: [
	            {header: 'Mu&#241;equilla 1', dataIndex: 'diametro1', flex: 1, sortable: false, draggable: false, renderer: diametroRenderer},
	            {header: 'Mu&#241;equilla 2', dataIndex: 'diametro2', flex: 1, sortable: false, draggable: false, renderer: diametroRenderer},
	            {header: 'Mu&#241;equilla 3', dataIndex: 'diametro3', flex: 1, sortable: false, draggable: false, renderer: diametroRenderer}
	            ]},
        { header: 'Conicidad (mm)', sortable: false, draggable: false, columns: [
	            {header: 'Mu&#241;equilla 1', dataIndex: 'conicidad1', flex: 1, sortable: false, draggable: false, renderer: conicidadRenderer},
	            {header: 'Mu&#241;equilla 2', dataIndex: 'conicidad2', flex: 1, sortable: false, draggable: false, renderer: conicidadRenderer},
	            {header: 'Mu&#241;equilla 3', dataIndex: 'conicidad3', flex: 1, sortable: false, draggable: false, renderer: conicidadRenderer}
	            ]},
        { header: 'Ancho (mm)', sortable: false, draggable: false, columns: [
	            {header: 'Mu&#241;equilla 1', dataIndex: 'ancho1', flex: 1, sortable: false, draggable: false, renderer: anchoRenderer},
	            {header: 'Mu&#241;equilla 2', dataIndex: 'ancho2', flex: 1, sortable: false, draggable: false, renderer: anchoRenderer},
	            {header: 'Mu&#241;equilla 3', dataIndex: 'ancho3', flex: 1, sortable: false, draggable: false, renderer: anchoRenderer}
	            ]},
        { header: 'Excentricidad (mm)', sortable: false, draggable: false, columns: [
	            {header: 'Mu&#241;equilla 1', dataIndex: 'excentricidad1', flex: 1, sortable: false, draggable: false, renderer: excentricidadRenderer},
	            {header: 'Mu&#241;equilla 2', dataIndex: 'excentricidad2', flex: 1, sortable: false, draggable: false, renderer: excentricidadRenderer},
	            {header: 'Mu&#241;equilla 3', dataIndex: 'excentricidad3', flex: 1, sortable: false, draggable: false, renderer: excentricidadRenderer}
	            ]},
        { header: 'Estado', dataIndex: 'estado', flex: 1, draggable: false,
          renderer: function(value) {
        	  var color;
        	  switch (value){
        	  default:
        	  case 'OK':
        		  color = 'green';
        		  break;
        	  case 'REG':
        		  color = 'orange';
        		  break;
        	  case 'FALLO':
        		  color = 'red';
        	  }
        	  return Ext.String.format('<span style="color:{1};">{0}</span>', value, color);
    	  }
        }
    ],
    height: 200
});

/***********************************************************/

function actualizarPorcetajeAceptacion(){
    labelAceptacion.setText('Porcentaje de Aceptacion: ' + aceptacionStore.getById('Aceptacion').get('medida') + '%');
}

var labelAceptacion = Ext.create('Ext.form.Label', {
    text: 'Porcentaje de Aceptacion: ' + aceptacionStore.getById('Aceptacion').get('medida') + '%',
    height: '30'
});

function actualizarPorcentajeExito(){
    var result = ( (ciguenialesPrueba.length - cantFallos) /ciguenialesPrueba.length)*100;
    if(isNaN(result))
        result = "-"
    labelExito.setText('Porcentaje de Exito: ' + result  + '%');
    return result;
}



var labelExito = Ext.create('Ext.form.Label', {
    text: 'Porcentaje de Exito: -',
    height: '30'
});

/**********************************************************/

var progreso = Ext.create('Ext.ProgressBar', {
   renderTo: Ext.getBody(),
   width: 300,
   text: 'Progreso de la prueba ...'
});

function actualizarProgreso(value){
    if(!value)
        value = ((indexCiguenial)*campos.length + (indexCampo + 1))/(ciguenialesPrueba.length*campos.length);
	
	if(value <= 0)
		value = 0;
    progreso.updateProgress(value,null,true);
}

/***********************************************************/
var panelControl = Ext.create('Ext.panel.Panel', {
    title: 'Control de Cigue&#241;ales',
    width: '100%',
    height: '100%',
    renderTo: Ext.getBody(),
    layout: {
        type: 'vbox',       // Arrange child items vertically
        align: 'stretch',    // Each takes up full width
        padding: 10
    },
    items: [{
        xtype: 'panel',
        layout: {type: 'hbox',
        padding: 25
        },
        resizable: false,
        items: [comboLote, {xtype: 'splitter', width: 100}, botonComenzar, {xtype: 'splitter', width: 15}, botonPausar, {xtype: 'splitter', width: 15}, botonDetener]
    }, {
        xtype: 'splitter'   // A splitter between the two child items
    }, gridResultados,

    {
        xtype: 'splitter'   // A splitter between the two child items
    }, {                    // Details Panel specified as a config object (no xtype defaults to 'panel').
        title: 'Detalles',
        bodyPadding: 5,
        height: '100',
        items: [
            {
                xtype: 'panel',
                items: [labelAceptacion], border: false
            },{   
                xtype: 'panel',
                items: [labelExito], border: false
            }, {
                xtype: 'splitter'   
            },progreso
        ]
    }]
});

